package com.hank.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration // 声明这是一个配置类
@EnableSwagger2 // 启用 Swagger
public class SwaggerConfig {

    // 定义一个名为 api 的 Bean，返回一个 Docket 对象
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2) // 指定使用 Swagger 2
                .select() // 选择哪些接口暴露给 Swagger
                .apis(RequestHandlerSelectors.basePackage("com.hank.controller")) // 扫描 com.example.api 包下的所有 API
                .paths(PathSelectors.any()) // 扫描所有路径
                .build() // 构建
                .groupName("Blog接口")
                .apiInfo(apiInfo()); // 添加 API 基本信息
    }

    // 定义 API 基本信息
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder() // 使用 ApiInfoBuilder 来构建 ApiInfo 对象
                .title("Blog") // API 标题
                .description("HankBlog接口文档") // API 描述
                .version("1.0.0") // 版本号
                .build(); // 构建
    }
}
